import requests
import os
import string
import random
import datetime

# 配置参数
FILE_PATH = "original_doc/20250806/请输入主题.txt"  # 替换为你的本地文件路径
API_KEY = "sk-8b6df4e170964def8f553aca15442d42"  # 替换为你的DeepSeek API密钥
MODEL_NAME = "deepseek-chat"  # 使用的模型名称
API_URL = "https://api.deepseek.com/v1/chat/completions"  # DeepSeek API端点

# 提示词模板
# PROMPT_TEMPLATE = """
# 请扮演一位洞察人心、文笔优美、擅长创作引发共鸣的经典段子的文案大师。你的任务是根据我提供的一句核心观点句，生成一段符合以下结构的经典文案，当输入的本身就是一段文案时，将文案润色一下
# （如果输入的内容本身就是文案，直接按结构化生成，输入本身就是文案-'真正能给你撑腰的是丰富的知识储备足够的经济基础，持续的情绪稳定，以及可控的生活节奏，还有那个永远打不败的自己。'，用户的简单描述-'生活中遇到生存压力，工作不如意，老婆不满意，培养孩子的费用，生活的费用，压的喘不过气来'）：
#
# 1. 惊艳开头，制造“钩子” (吸引好奇心)： 以一句充满洞察力、引人深思或略带悬念的句子开头。目的是立刻抓住观众注意力，让他们有强烈的意愿继续读下去。开头不必拘泥于“这是我听过...”或“经历过...”的句式，但要达到同等甚至更强的吸引力。
#    - 使用一个能立刻抓住人心的开头句。可以是（优先使用第一条，以此类推）：
#      - 一个一般人都了解但并没有深入了解，尽可能使用这种（如：“你可能知道...，但你未必真正...”）
#      - 一个普遍认同但未经如此清晰表述的洞察（如：“这是我听到过最准确的判断...”）
#      - 一个基于共同经历或情感的断言（如：“经历过人间冷暖的人都懂得...”）
#      - 一个引人思考的疑问或悖论。
#    - 核心要求： 这句开头必须强烈引发观众继续阅读的欲望，让他们很想知道接下来会是什么？”。
# 2. 明确主题 (固定格式)： 紧接着，清晰自然地引出主题，格式固定为：“今日主题，[关键词]”。[关键词] 应简洁有力地提炼核心观点句的核心思想（例如：爱、人品、成长、选择、坚持等）。
#    - 作用： 告诉观众这段深刻内容聚焦在什么问题上。
# 3. 经典阐述 (引起共鸣)： 这是主体部分，一定要接地气，贴合实际生活和情感，不要像诗歌一样。灵活使用精炼、对仗、富有哲理、具有情感穿透力以及强烈对比的句式（如排比、对偶、递进等），深入阐释[关键词]的内涵。句式风格参考：
#    - [A]是看到了...，[B]是包容了...
#    - [A]是...，[B]是...
#    - 开始...，后来...
#    - 敬于...，合于...，久于...，终于...
#    - 或其他能形成强烈对比或递进关系的经典结构。
#      内容要深刻、普世，能精准戳中人心，引发强烈的情感共鸣或认同感。
#
# 你的输出要求：
# - 强吸引力开头： 制造“钩子”。
#   - 严格遵循“惊艳开头 -> 今日主题，[关键词] -> 经典阐述”的三段式结构。
# - 开头句务必新颖、有力量、能引发好奇。
# - [关键词] 提炼准确、简洁。
# - 主体阐述部分必须使用经典的、易于传播的、富有文采的句式，句意完整，逻辑清晰，情感饱满。
# - 整体语言风格：精炼、优美、深刻、有感染力，具有成为“金句”或“经典段子”的潜力。
# - 不要类似于诗歌一样。
#
# 我的输入 (核心观点句)：
# {core_idea}
#
# 你的输出：
# 请只生成符合上述要求的完整文案段落。
# """

PROMPT_TEMPLATE = """
请扮演一位洞察人心、文笔优美、擅长创作引发共鸣的经典段子的文案大师。你的任务是根据我提供的一句核心观点句，生成一段符合以下结构的经典文案，当输入的本身就是一段文案时，将文案润色一下
（如果输入的内容本身就是文案，直接按结构化生成，输入本身就是文案-'真正能给你撑腰的是丰富的知识储备足够的经济基础，持续的情绪稳定，以及可控的生活节奏，还有那个永远打不败的自己。'，用户的简单描述-'生活中遇到生存压力，工作不如意，老婆不满意，培养孩子的费用，生活的费用，压的喘不过气来'）：

1. 惊艳开头，制造“钩子” (吸引好奇心)： 以一句充满洞察力、引人深思或略带悬念的句子开头。目的是立刻抓住观众注意力，让他们有强烈的意愿继续读下去。开头不必拘泥于“这是我听过...”或“经历过...”的句式，但要达到同等甚至更强的吸引力。
   - 使用一个能立刻抓住人心的开头句。可以是（优先使用第一条，以此类推）：
     - 一个一般人都了解但并没有深入了解，尽可能使用这种（如：“你可能知道...，但你未必真正...”）
     - 一个普遍认同但未经如此清晰表述的洞察（如：“这是我听到过最准确的判断...”）
     - 一个基于共同经历或情感的断言（如：“经历过人间冷暖的人都懂得...”）
     - 一个引人思考的疑问或悖论。
   - 核心要求： 这句开头必须强烈引发观众继续阅读的欲望，让他们很想知道接下来会是什么？”。
2. 明确主题 (固定格式)： 紧接着，清晰自然地引出主题，格式固定为：“今日主题，[关键词]”。[关键词] 应简洁有力地提炼核心观点句的核心思想（例如：爱、人品、成长、选择、坚持等）。
   - 作用： 告诉观众这段深刻内容聚焦在什么问题上。
3. 经典阐述 (引起共鸣)： 这是主体部分，一定要接地气，贴合实际生活和情感，不要像诗歌一样。灵活使用精炼、对仗、富有哲理、具有情感穿透力以及强烈对比的句式（如排比、对偶、递进等），深入阐释[关键词]的内涵。句式风格参考：
   - [A]是看到了...，[B]是包容了...
   - [A]是...，[B]是...
   - 开始...，后来...
   - 敬于...，合于...，久于...，终于...
   - 或其他能形成强烈对比或递进关系的经典结构。
     内容要深刻、普世，能精准戳中人心，引发强烈的情感共鸣或认同感。

你的输出要求：
- 强吸引力开头： 制造“钩子”。
  - 严格遵循“惊艳开头 -> 今日主题，[关键词] -> 经典阐述”的三段式结构。
- 开头句务必新颖、有力量、能引发好奇。
- [关键词] 提炼准确、简洁。
- 主体阐述部分必须使用经典的、易于传播的、富有文采的句式，句意完整，逻辑清晰，情感饱满。
- 整体语言风格：精炼、优美、深刻、有感染力，具有成为“金句”或“经典段子”的潜力。
- 不要类似于诗歌一样。

我的输入 (核心观点句)：
{core_idea}

你的输出：
请只生成符合上述要求的完整文案段落。
"""

def generate_random_filename(length=5, extension="txt"):
    """生成随机小写字母文件名，并添加日期目录层"""
    letters = string.ascii_lowercase
    random_string = ''.join(random.choice(letters) for _ in range(length))

    # 获取当天日期（格式：YYYYMMDD）
    today = datetime.datetime.now().strftime("%Y%m%d")
    dst_dir = "output\\"+today
    # 创建日期目录（如果不存在）
    if not os.path.exists(dst_dir):
        os.makedirs(dst_dir)

    # 生成以时分秒开头的字符串做文件名
    minute = datetime.datetime.now().strftime("%H%M%S")
    minute_random_string = minute+random_string

    # 返回包含日期目录的文件路径
    return os.path.join(dst_dir, f"{minute_random_string}.{extension}")

def read_file_content(file_path):
    """读取本地文件内容"""
    try:
        with open(file_path, 'r', encoding='utf-8') as file:
            return file.read()
    except FileNotFoundError:
        print(f"错误：文件未找到 - {file_path}")
        return None
    except Exception as e:
        print(f"读取文件时出错: {str(e)}")
        return None


def generate_content_with_deepseek(prompt, api_key, model=MODEL_NAME):
    """使用DeepSeek API生成内容"""
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }

    payload = {
        "model": model,
        "messages": [
            {"role": "user", "content": prompt}
        ],
        "temperature": 0.7,
        "max_tokens": 2000
    }

    try:
        response = requests.post(API_URL, json=payload, headers=headers)
        response.raise_for_status()  # 检查HTTP错误

        result = response.json()
        return result['choices'][0]['message']['content']

    except requests.exceptions.RequestException as e:
        print(f"API请求失败: {str(e)}")
    except KeyError:
        print("API响应格式错误")
    except Exception as e:
        print(f"处理时发生错误: {str(e)}")
    return None

def main():
    # 1. 读取文件内容
    core_idea = read_file_content(FILE_PATH)
    if not core_idea:
        print("err: 文件内容为空，请在文件中写入主题内容...")
        return

    print(f"已成功读取文件内容，长度: {len(core_idea)}字符")

    # 2. 构建提示词（使用模板）
    prompt = PROMPT_TEMPLATE.format(core_idea=core_idea.strip())
    print("\n构建的提示词:")
    print("=" * 50)
    print(prompt)
    print("=" * 50)

    # 3. 调用DeepSeek API
    print("正在调用DeepSeek API生成内容...")
    generated_content = generate_content_with_deepseek(prompt, API_KEY)

    # 4. 输出结果
    if generated_content:
        print("\n生成结果:")
        print("=" * 50)
        print(generated_content)
        print("=" * 50)

        # 生成随机文件名并保存结果
        output_filename = generate_random_filename()
        with open(output_filename, "w", encoding="utf-8") as f:
            f.write(generated_content)
        print(f"结果已保存到 {output_filename}")


if __name__ == "__main__":
    main()